Skip to content

Swap out Safe requirements for generic multisig - #32

Open
JAG-UK wants to merge 1 commit into
filecoin-project:mainfrom
JAG-UK:fix/multisig-identification
Open

Swap out Safe requirements for generic multisig#32
JAG-UK wants to merge 1 commit into
filecoin-project:mainfrom
JAG-UK:fix/multisig-identification

Conversation

@JAG-UK

@JAG-UK JAG-UK commented Aug 25, 2026

Copy link
Copy Markdown

In keeping with the FIP text we only check that this is a multisig with more than 1 signer, no internal details are checked or enforced.

Note I think it's legit to make it >1 signer since otherwise it's too easy to lose control of this important key.

@JAG-UK

JAG-UK commented Aug 25, 2026

Copy link
Copy Markdown
Author

Note this is tested with multisigs but NOT Safes - however based on my previous experience of implementing multisig Root Key Holders this pattern should work.

@FilOzzy FilOzzy moved this from 📌 Triage to 🔎 Awaiting review in FOC Aug 25, 2026
@rvagg

rvagg commented Aug 25, 2026

Copy link
Copy Markdown
Member

Can we just have no check and let the FIP guide it? One of the (other) problems with the multisig check is that it makes testing really annoying. Being able to spin this up in a devnet for an integration test, or in butterflynet, or other places where you need lightweight exercise of the various paths here is that you also need to bring along all of the mechanisms needed to satisfy this check just to make stuff happen. Hard-mode is having to deploy Safe and jumping through all those hoops, I'm not sure this version is all that much easier?
Personally I'd rather see it dropped entirely and letting the FIP text be the boss of how it's governed, not babysat by the contract.

@JAG-UK

JAG-UK commented Aug 25, 2026

Copy link
Copy Markdown
Author

@rvagg alternate PR here: #33

I'll let the maintainers choose which they want. Personally I think the safety is a useful feature but we can easily leave it to human discipline.

@JAG-UK JAG-UK mentioned this pull request Aug 25, 2026
@BigLep BigLep moved this from Backlog to In review in Solstice Aug 25, 2026
@BigLep
BigLep requested a review from wjmelements August 25, 2026 15:59
Comment thread src/lib/IsAMultisig.sol
/// @notice The only thing we require of a multisig: it can list its signers.
/// @dev Safe{Wallet} and the other common multisig implementations all expose this.
interface IMultisig {
function getOwners() external view returns (address[] memory);

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Does Safe implement this method? Can we assume any multisig would implement it? Research others and see what the most-common interface is.

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Safe definitely does: getOwners() is a public view function on OwnerManager, which Safe inherits.
Just tested with foundry just now to double check but this same 'trick' worked with the Root Key Holders msig-of-msigs which mixed raw and Safe msigs.

But as for others I don't know - what others do we need to support?

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sounds like we still only support safes.

Here's a list https://www.alchemy.com/dapps/list-of/multisig-wallets-on-ethereum

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

OK cool, so we're OK then I think.

If we were still worried and want to be as broad as possible then we could change it to only check address.code.length > 0 like you suggested in the other thread. This is a governance opinion at this point I think.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: In review

Development

Successfully merging this pull request may close these issues.

5 participants